在我的公司每個月中,
都會為當月生日的夥伴慶生,
因此每個月我都要整理出這些生日夥伴的資料,
讓我們一起來看看吧。
先挑選出全部夥伴的生日月分:
SELECT birthdate,datepart(mm,birthdate) 生日月份,*
FROM [HumanResources].[Employee]
ORDER BY datepart(mm,birthdate)
結果就會是:
把每個人分到各自的生日月分,
工作就結束了嗎?
但是這樣有個風險,
假設我們老早就整理好這份名單,
可能會遺漏掉新進的夥伴和離開的前輩。
因此我的習慣是每月1號再做整理,
我只要將每個月的「月份數字」設定成變數,
就可以簡單完成了!
--宣告一個變數,準備儲存"現在幾月"這個數字(int)
DECLARE @nowMonth int
--設定初執
SET @nowMonth = DATEPART(mm,GETDATE())
--檢查看看結果
SELECT @nowMonth 現在幾月
現在是9月,結果沒錯!
接下來就是選出9月的壽星名單,
就大功告成啦~
如果想要找出9月生日的顧客也沒問題,
再JOIN [Person].[Person],便能找出壽星姓名:
(這裡小菜一碟,就不贅述啦)
SELECT birthdate,datepart(mm,birthdate) 生日月份,FirstName,MiddleName,LastName
FROM [HumanResources].[Employee] E
JOIN [Person].[Person] P on E.BusinessEntityID = P.BusinessEntityID
WHERE DATEPART(mm,birthdate) = @nowMonth
ORDER BY PersonType
變數可以佔存我們需要的值,
讓我們不用每個月都重新宣告現在是幾月份,
使用起來十分便利。
十月就要到啦,
大家有興趣的話可以試著找看看十月的壽星有哪些人ㄛ~
但還有更便利的,
就是當變數
結合預存程序(stored procedure,有些人會簡稱為sp或proc),
這也是我們接下來的主題。